Skip to content

Conversation

keyboardspecialist
Copy link
Contributor

Description

Fixes issue with tilesets that have an identity root transform and child tiles with their own world transform. This uses the tileset bounding sphere center point transformed using Transforms.eastNorthUpToFixedFrame.

Previously, because of the identity, it led to tiles transforming themselves into world space prematurely leading to low quality output due to precision loss.

Issue number and link

#12925

Testing plan

Author checklist

  • I have submitted a Contributor License Agreement
  • I have added my name to CONTRIBUTORS.md
  • I have updated CHANGES.md with a short summary of my change
  • I have added or updated unit tests to ensure consistent code coverage
  • I have updated the inline documentation, and included code examples where relevant
  • I have performed a self-review of my code

…et has an identity root transform and children have their world transform
Copy link

Thank you for the pull request, @keyboardspecialist!

✅ We can confirm we have a CLA on file for you.

@mzschwartz5
Copy link
Contributor

  1. Is there any sandcastle or anything I can use to verify the fix?
  2. Reading through the issue, I'm a bit confused on why this set up causes splats to be transformed on the CPU rather than the GPU. Can you elaborate?
  3. Did the issue also happen if the root tile has a non-identity transform and the child tiles have their own world transforms? Or does the root tile have to have an identity transform.

@javagl
Copy link
Contributor

javagl commented Oct 13, 2025

The issue should contain a test data set. The _rootTransform should probably no longer be called _rootTransform, because it isn't necessarily the "root transform". Although... it wasn't the root transform to begin with - it was the "computed transform", which includes the model matrix. In fact, the different configurations of where a certain transform takes place (in the data itself, in the root tile transform, in the child tile transform, in a glTF node matrix) would warrant ~5 (or maybe 5x5) test data sets. But creating test data where the transform happens in another glTF node than 'node 0' is moot, because this will break anyhow.

However, here's a test data set that probably demonstrates what the issue was probably about: With the transform in the root tile, it looks fine. With the transform in the child tile, it looks wrong and wiggly

Cesium Splats PR 12926

The tilesets with a sandcastle:

Cesium Splat Tileset Transform PR 12926.zip

(It still uses the "old" extension format. I've prepared supporting the new extension format, but ... this was before the new extension format was ""final"", so it will have to be straightened out and reviewed...)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Low quality Gaussian splat rendering when child tiles contain their world transform

3 participants